home *** CD-ROM | disk | FTP | other *** search
/ Light ROM 1 / LIGHT-ROM 1 (Amiga Library Services)(1994).iso / ffdisks / d996.lha / Startup-Menu / Source / Config.PAS next >
Pascal/Delphi Source File  |  1994-04-05  |  4KB  |  165 lines

  1. TYPE
  2.     tCData = Record
  3.         cd_Font : tTextAttr;
  4.         cd_ModeID : Longint;
  5.         cd_Across : LongInt;
  6.         cd_Down   : LongInt;
  7.         cd_ScrTit : String;
  8.         cd_WinTit : String;
  9.         cd_Pal    : Array[0..3] of Integer;
  10.     end;
  11.  
  12. VAR
  13.     CD           : tCData;
  14.     
  15. (* ===================================================================== *)
  16. Function WriteConfigFile(FName : string) : Boolean;
  17.  
  18. VAR
  19.     OutFile : Text; (* Just save config as ascii, no need for iff *)
  20.     node    : pMyNode;
  21.     tmpStr  : String;
  22.     err     : integer;
  23.     
  24. begin
  25.     WriteConfigFile := False;
  26.     (*$I-*)
  27.     erase(FName);
  28.     rewrite(outfile, FName);
  29.     (*$I-*)
  30.     If (IOResult = 0) then begin
  31.         Writeln(OutFile, 'SM.Prefs file v1.00 ©LSK 1994.');
  32.         node := pMyNode(currentlist^.lh_Head);
  33.         while pMyNode(node^.LSK_Node.ln_Succ) <> NIL do begin
  34.             writeln(outfile, node^.LSK_Name);
  35.             writeln(outfile, node^.LSK_Cmd);
  36.             writeln(outfile, node^.LSK_Key);
  37.             node := pMyNode(node^.LSK_Node.ln_Succ);
  38.         end;
  39.         Writeln(outfile,'*NODE END*');
  40.         Writeln(OutFile);
  41.  
  42.         Writeln(outfile,RetrieveStr(CD.cd_Font.ta_Name));
  43.         
  44.         Str(CD.cd_Font.ta_YSize, tmpstr);
  45.         Writeln(OutFile, tmpstr);
  46.         
  47.         Str(CD.cd_Font.ta_Style, tmpstr);
  48.         Writeln(OutFile, tmpstr);
  49.         
  50.         Str(CD.cd_Font.ta_Flags, tmpstr);
  51.         Writeln(OutFile, tmpstr);
  52.         
  53.         Str(CD.cd_ModeID, tmpstr);
  54.         Writeln(OutFile, tmpStr);
  55.         
  56.         Str(CD.cd_Across, tmpstr);
  57.         Writeln(OutFile, tmpstr); 
  58.         
  59.         Str(CD.cd_Down, tmpstr);
  60.         Writeln(OutFile, tmpstr);
  61.         
  62.         Writeln(OutFile, CD.cd_ScrTit);
  63.         Writeln(OutFile, CD.cd_WinTit);
  64.         
  65.         Str(CD.cd_Pal[0], tmpstr);
  66.         Writeln(OutFile, tmpstr);
  67.         Str(CD.cd_Pal[1], tmpstr);
  68.         Writeln(OutFile, tmpstr);
  69.         Str(CD.cd_Pal[2], tmpstr);
  70.         Writeln(OutFile, tmpstr);
  71.         Str(CD.cd_Pal[3], tmpstr);
  72.         Writeln(OutFile, tmpstr);
  73.         
  74.         Writeln(outfile,'*DEF END*');
  75.         close(outfile);
  76.         WriteConfigFile := True;
  77.     end;
  78. end;
  79.  
  80. (* ===================================================================== *)
  81.  
  82. Function ReadConfigFile(FName : string) : Boolean;
  83.  
  84. VAR
  85.     INTextF : Text; (* Just save config as ascii, no need for iff *)
  86.     node   : pMyNode;
  87.     tmpStr : String[190];
  88.     err, res    : integer;
  89.     rc     : Boolean;
  90.     buf    : packed array[1..1024] of char;
  91.     
  92. begin
  93.     {$I-}
  94.     rc := False; (* Set default exit *)
  95.  
  96.     Assign(INTextF, FName);
  97.     SetTextBuf(INTextF, buf);
  98.     Reset(INTextF);
  99.  
  100.     res := IOResult;
  101.     if (res = 0) then begin
  102.         {$I-}
  103.         readln(INTextF, TmpStr);
  104.         If tmpstr = 'SM.Prefs file v1.00 ©LSK 1994.' then begin
  105.             CurrentList := AllocRemember(@RememberKey, sizeof(tList), MEMF_CLEAR);
  106.               if CurrentList <> NIL then begin
  107.              newlist(currentlist);
  108.              Readln(INTextF, TmpStr);
  109.              While TmpStr <> '*NODE END*' do begin
  110.                 (* Get node mem *)
  111.                 node := AllocRemember(@RememberKey, Sizeof(tMyNode), MEMF_CLEAR OR MEMF_PUBLIC);
  112.                 node^.LSK_Name := TmpStr;
  113.                 Readln(INTextF, node^.LSK_Cmd);
  114.                 Readln(INTextF, node^.LSK_Key);
  115.                 node^.LSK_Node.ln_Name := @node^.LSK_Name[1];
  116.                 node^.LSK_Node.ln_Type := NT_USER;
  117.                 node^.LSK_Node.ln_Pri  := 0;
  118.                 AddTail(CurrentList, pNode(node));
  119.                 Readln(INTextF, TmpStr);
  120.              end;
  121.             
  122.              Readln(INTextF);
  123.              Readln(INTextF, tmpStr);
  124.              CD.cd_Font.ta_Name := CstrConstPtrAR(@RememberKey, tmpstr);
  125.             
  126.              Readln(INTextF, TmpStr);
  127.              Val(tmpstr, CD.cd_Font.ta_YSize, err);
  128.             
  129.              Readln(INTextF, TmpStr);
  130.              Val(tmpstr, CD.cd_Font.ta_Style, err);
  131.             
  132.              Readln(INTextF, TmpStr);
  133.              Val(tmpstr, CD.cd_Font.ta_Flags, err);
  134.             
  135.              Readln(INTextF, TmpStr);
  136.              Val(tmpstr, CD.cd_ModeID, err);
  137.             
  138.              Readln(INTextF, TmpStr);
  139.              Val(tmpstr, CD.cd_Across, err);
  140.             
  141.              Readln(INTextF, TmpStr); 
  142.              Val(tmpstr, CD.cd_Down, err);
  143.             
  144.              Readln(INTextF, CD.cd_ScrTit);
  145.              Readln(INTextF, CD.cd_WinTit);
  146.         
  147.              Readln(INTextF, TmpStr);
  148.              Val(tmpStr, CD.cd_Pal[0], err);
  149.              Readln(INTextF, TmpStr);
  150.              Val(tmpStr, CD.cd_Pal[1], err);
  151.              Readln(INTextF, TmpStr);
  152.              Val(tmpStr, CD.cd_Pal[2], err);
  153.              Readln(INTextF, TmpStr);
  154.              Val(tmpStr, CD.cd_Pal[3], err);
  155.  
  156.              Close(INTextF);
  157.              rc := True;
  158.             end;
  159.         end else Close(INTextF);
  160.     end;
  161.     ReadConfigFile := rc;
  162.     {$I+}
  163. end;
  164.     
  165. (* ===================================================================== *)